package com.bdhub.common;

import java.util.HashSet;
import java.util.Set;

public enum MessageType {
	/***
	 * 心跳消息
	 */
	HEARTBEAT_REQ(1000),
	/**
	 * 用户登录验证
	 */
	LOGIN_REQ(1001),
	/***
	 * 用户 退出消息
	 */
	USER_QUIT(1002),
	/**
	 * 离线消息询问
	 */
	OFFLINE_MSG_ASK(1003),
	/**
	 * 重复登录
	 */
	REPEAT_LOGIN(1005),
	
	/**
	 * 客户端状态通知
	 */
	CLIENT_STATUS_NOTICE(1006),

	/**
	 * 拉取离线
	 */
	GET_OFFLINE_MESSAGE(1010), 
	
	/**
	 * 离线消息
	 */
	OFFLINE_MESSAGE(1011), 
	
	/**
	 * 拉取历史消息
	 */
	GET_HIS_MESSAGE(1012), 
	
	/**
	 * 历史消息
	 */
	HIS_MESSAGE(1013), 
	
	/**
	 * 同步用户 连接信息
	 */
	SYN_USER_CONN(1111), 
	
	/***
	 * 单聊
	 */
	SINGLE(2001),
	/***
	 * 群聊
	 */
	TOPIC(2002),
	/***
	 * 加好友
	 */
	ADD_FRIEND(2003),
	/**
	 * 同意加好友
	 */
	AGREEN_FRIEND(2004),
	/**
	 * 拒绝加好友
	 */
	REJECT_FRIEND(2005),
	/***
	 * 删除加好友
	 */
	DELETE_FRIEND(2006),
	/**
	 * 删除加好友
	 */
	BLACK_FRIEND(2007),

	/**
	 * 邀请用户加入话题
	 */
	TOPIC_INVITE_USER_ADD(2008),
	
	/**
	 * 聊天室
	 */
	CHAT_ROOM(2009),
	/**
	 * 分享
	 */
	CHAT_FRIEND_SHARE(2010),
	
	/**
	 * 用户进入聊天室
	 */
	CHAT_ROOM_JOIN(2011),
	
	/**
	 * 用户退出聊天室
	 */
	CHAT_ROOM_OUT(2012),
	
	/**
	 * 管理员将用户禁言
	 */
	CHAT_ROOM_KEEP_SILENT(2013),
	
	/**
	 * 聊天室视频动作
	 */
	CHAT_ROOM_VIDEO_ACTION(2014),
	
	
	/**
	 * 封禁聊天室
	 */
	CHAT_ROOM_CLOSURE(2015),
	
	/**
	 * 删除聊天室
	 */
	CHAT_ROOM_DELETE(2016),
	
	
	/**
	 * 聊天室禁言解禁
	 */
	CHAT_ROOM_CANCEL_SILENT(2017),
	
	/**
	 * 系统推荐 
	 */
	SYS_RECOMMEND (2018),

	/**
	 * 用户更新个人资料
	 */
	USER_UD_INFO(2020),

	/**
	 * 通讯录反向匹配通知
	 */

	ADDRESS_LIST_NOTICE(2021),
	
	/**
	 * 贴子新评论通知
	 */

	CIRCLE_NOTE_NEW_COMMENT_NOTICE(2022),
	
	/**
	 * 贴子点赞通知
	 */

	CIRCLE_NOTE_PRAISE_NOTICE(2023),
	
	/**
	 * 管理员将用户移出圈子
	 */

	CIRCLE_REMOVE_USER_NOTICE(2024),
	
	/**
	 * 圈子被删除通知
	 */

	CIRCLE_REMOVE_NOTICE(2025),
	
	
	/**
	 * 圈子有新贴发布通知
	 */

	CIRCLE_NEW_NOTE_NOTICE(2026),
	
	/**
	 * 贴子被删除通知被删者
	 */
	CIRCLE_NOTE_REMOVE_NOTICE(2027),
	
	/**
	 * 动作广播
	 */
	VIDEO_ACTION(2050),

	/**
	 * 话题移除用户
	 */
	TOPIC_REMOVE_USER(2051),
	
	/**
	 * 通知群用户即将播放视频
	 */
	NOTICE_TOPIC_PLAY_VIDEO(2052),

	/**
	 * 消息处理状态报告
	 */
	BUS_SERVER_REPORT(3001),

	/**
	 * 客户端状态报告
	 */
	CLIENT_REPORT(3002),

	/**
	 * 服务器状态报告
	 */
	SERVER_RESP_REPORT(3003),

	/**
	 * 应用升级
	 */
	UPGRADE_APP(9001),
	/**
	 * 刷新话题关注用户 数与在线用户 数
	 */
	REFLESH_TOPIC_USER_COUNT(9002),
	
	/**
	 * 用户自由发言
	 */
	PIAZZA_TOPIC_MESSAGE(2080),
	/**
	 * 加入群
	 */
	PIAZZA_DYNAMIC_JOIN_TOPIC(2081),
	
	/**
	 * 关注群
	 */
	PIAZZA_DYNAMIC_FL_TOPIC(2082),
	
	/***
	 * 小火妹推荐群（系统推荐）
	 */
	PIAZZA_DYNAMIC_RC_TOPIC(2083),
	
    /**
     * 系统提示节目开播
     */
	PIAZZA_DYNAMIC_PLAY_VIDEO(2084),
	
	/***
	 * 热门群
	 */
	PIAZZA_DYNAMIC_HOT_TOPIC(2085),
	/**
	 * 进入聊天室
	 */
	PIAZZA_DYNAMIC_CHAT_ROOM_JOIN(2100),
	
	/**
	 * 创建聊天室
	 */
	PIAZZA_DYNAMIC_CHAT_ROOM_CREATE(2101),
	
	/**
	 * 创建圈子
	 */
	PIAZZA_DYNAMIC_CIRCLE_CREATE(2102),
	
	/**
	 * 加入圈子
	 */
	PIAZZA_DYNAMIC_CIRCLE_JOIN(2103),
	
	/**
	 * 广场推荐
	 */
	PIAZZA_DYNAMIC_SYS_SHARE(2104),
	
	;
	
	static{
		MessageType [] messageTypes = MessageType.values();
		Set<Integer> types= new HashSet<Integer>();
		for(MessageType type : messageTypes){
			if(types.contains(type.value())){
				throw new RuntimeException("重复包含消息类型："+ type);
			}
			types.add(type.value());
		}
	}
	// 服务器状态报告
	private int type;

	private MessageType(int type) {
		this.type = type;
	}

	public int value() {
		return type;
	}

	@Override
	public String toString() {
		return String.valueOf(type);
	}

}
